// --------------------------------------------------------------------------------------------
// Version: MPL 1.1/GPL 2.0/LGPL 2.1
// 
// The contents of this file are subject to the Mozilla Public License Version
// 1.1 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
// http://www.mozilla.org/MPL/
// 
// Software distributed under the License is distributed on an "AS IS" basis,
// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
// for the specific language governing rights and limitations under the
// License.
// 
// <remarks>
// Generated by IDLImporter from file nsISAXLexicalHandler.idl
// 
// You should use these interfaces when you access the COM objects defined in the mentioned
// IDL/IDH file.
// </remarks>
// --------------------------------------------------------------------------------------------
namespace Gecko
{
	using System;
	using System.Runtime.InteropServices;
	using System.Runtime.InteropServices.ComTypes;
	using System.Runtime.CompilerServices;
	
	
	/// <summary>
    /// SAX2 extension handler for lexical events.
    ///
    /// This is an extension handler for SAX2 to provide lexical
    /// information about an XML document, such as comments and CDATA
    /// section boundaries.
    ///
    /// The events in the lexical handler apply to the entire document,
    /// not just to the document element, and all lexical handler events
    /// must appear between the content handler's startDocument and
    /// endDocument events.
    /// </summary>
	[ComImport()]
	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	[Guid("23c26a56-adff-440c-8caf-95c2dc2e399b")]
	public interface nsISAXLexicalHandler
	{
		
		/// <summary>
        /// Report an XML comment anywhere in the document.
        ///
        /// This callback will be used for comments inside or outside the
        /// document element, including comments in the external DTD subset
        /// (if read).  Comments in the DTD must be properly nested inside
        /// start/endDTD and start/endEntity events (if used).
        ///
        /// @param chars The characters in the comment.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void Comment([MarshalAs(UnmanagedType.CustomMarshaler, MarshalType = "Gecko.CustomMarshalers.AStringMarshaler")] nsAStringBase chars);
		
		/// <summary>
        /// Report the start of DTD declarations, if any.
        ///
        /// This method is intended to report the beginning of the
        /// DOCTYPE declaration; if the document has no DOCTYPE declaration,
        /// this method will not be invoked.
        ///
        /// All declarations reported through DTDHandler or DeclHandler
        /// events must appear between the startDTD and endDTD events.
        /// Declarations are assumed to belong to the internal DTD subset
        /// unless they appear between startEntity and endEntity events.
        /// Comments and processing instructions from the DTD should also be
        /// reported between the startDTD and endDTD events, in their
        /// original order of (logical) occurrence; they are not required to
        /// appear in their correct locations relative to DTDHandler or
        /// DeclHandler events, however.
        ///
        /// Note that the start/endDTD events will appear within the
        /// start/endDocument events from ContentHandler and before the first
        /// startElement event.
        ///
        /// @param name The document type name.
        /// @param publicId The declared public identifier for the
        /// external DTD subset, or null if none was declared.
        /// @param systemId The declared system identifier for the
        /// external DTD subset, or null if none was declared.
        /// (Note that this is not resolved against the document
        /// base URI.)
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void StartDTD([MarshalAs(UnmanagedType.CustomMarshaler, MarshalType = "Gecko.CustomMarshalers.AStringMarshaler")] nsAStringBase name, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalType = "Gecko.CustomMarshalers.AStringMarshaler")] nsAStringBase publicId, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalType = "Gecko.CustomMarshalers.AStringMarshaler")] nsAStringBase systemId);
		
		/// <summary>
        /// Report the end of DTD declarations.
        ///
        /// This method is intended to report the end of the
        /// DOCTYPE declaration; if the document has no DOCTYPE declaration,
        /// this method will not be invoked.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void EndDTD();
		
		/// <summary>
        /// Report the start of a CDATA section.
        ///
        /// The contents of the CDATA section will be reported through the
        /// regular characters event; this event is intended only to report
        /// the boundary.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void StartCDATA();
		
		/// <summary>
        /// Report the end of a CDATA section.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void EndCDATA();
		
		/// <summary>
        /// Report the beginning of some internal and external XML entities.
        ///
        /// Because of the streaming event model that SAX uses, some
        /// entity boundaries cannot be reported under any circumstances:
        ///
        /// 1.) general entities within attribute values
        /// 2.) parameter entities within declarations
        ///
        /// These will be silently expanded, with no indication of where
        /// the original entity boundaries were.
        ///
        /// Note also that the boundaries of character references (which
        /// are not really entities anyway) are not reported.
        ///
        /// All start/endEntity events must be properly nested.
        ///
        /// @param name The name of the entity.  If it is a parameter
        /// entity, the name will begin with '%', and if it is the
        /// external DTD subset, it will be "[dtd]".
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void StartEntity([MarshalAs(UnmanagedType.CustomMarshaler, MarshalType = "Gecko.CustomMarshalers.AStringMarshaler")] nsAStringBase name);
		
		/// <summary>
        /// Report the end of an entity.
        ///
        /// @param name The name of the entity that is ending.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void EndEntity([MarshalAs(UnmanagedType.CustomMarshaler, MarshalType = "Gecko.CustomMarshalers.AStringMarshaler")] nsAStringBase name);
	}
}
